package Base;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;


import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Cuenta extends SQLiteOpenHelper {
	
	private static String BASE = "MindShare";
	private String CREATE_TABLE_USUARIO = "CREATE TABLE Usuario (" +
										  "nombre nvarchar(50) PRIMARY KEY," +
										  "password nvarchar(50),+" +
										  "regId nvarchar(50)"+")";
	
	private String CREATE_TABLE_EMPLEADO = "CREATE TABLE Empleado (" +
			  "id_Empleado nvarchar(36) PRIMARY KEY," +
			  "nombre nvarchar(50), rfc nvarchar(13),curp nvarchar(18), numEmpleado nvarchar(50))";
	
	private String CREATE_TABLE_MOVIL = "CREATE TABLE Movil (" +
		     "cveAcceso nvarchar(10) PRIMARY KEY, " +
		     "cveGSM nvarchar(50), id_empleado nvarchar(36))";
	
	private String CREATE_TABLE_RECIBO = "CREATE TABLE Recibo (" +
										     "id_Recibo nvarchar PRIMARY KEY, " +
										     "estatus nvarchar(1), periodo nvarchar(20), anio INTEGER,mes INTEGER,numReciboMes INTEGER)";
	
	
	private String CREATE_TABLE_CERTIFICADO= "CREATE TABLE Certificado (" +
		     "numero nvarchar(20) PRIMARY KEY, " +
		     "fechaInicio TIMESTAMP NOT NULL DEFAULT current_timestamp, fechaFin TIMESTAMP NOT NULL DEFAULT current_timestamp, estatus nvarchar(10))";

	

	public Cuenta(Context context) {
		super(context, BASE, null, 1);
		// TODO Auto-generated null stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(CREATE_TABLE_USUARIO);
		db.execSQL(CREATE_TABLE_EMPLEADO);
		db.execSQL(CREATE_TABLE_MOVIL);
		db.execSQL(CREATE_TABLE_CERTIFICADO);		
		db.execSQL(CREATE_TABLE_RECIBO);		
		
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}
	
	//Inserta los datos al momemto que el usuario baja la app y hace el registro a partir de la cveAcceso
	public void registrarUsuario(String nombre,String password,String regId)
	{
		
		
		String queryUsuario = "INSERT INTO Usuario VALUES ('" +nombre+"','"+password+"'+'"+regId+"')";
		
		
		SQLiteDatabase db = getWritableDatabase();
		db.execSQL(queryUsuario);
		db.close();
		db = null;
	
	}
	
	public void insertarCertificado(String numeroCertificado,String estatus)
	{
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String fechaInicioS = dateFormat.format(new java.util.Date());
		String fechaFinalS = dateFormat.format(new java.util.Date());
		
		String queryCertificado = "INSERT INTO Certificado VALUES ('"+numeroCertificado+"','"+fechaInicioS+"','"+fechaFinalS+"','"+estatus+"')";
			
		SQLiteDatabase db = getWritableDatabase();
		db.execSQL(queryCertificado);
		db.close();
		db = null;
	
	}
	
	private java.util.Date convertirAdate(String fecha){
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		java.util.Date date=null;
		try {

		date = dateFormat.parse(fecha);

		} catch (ParseException ex) {

		ex.printStackTrace();

		}
		return date;
	}
	public void insertarRecibo(String id_recibo,String estatus,String periodo,int anio,int mes, int numReciboMes)
	{		
		String query = "INSERT OR REPLACE INTO Recibo VALUES ('"+id_recibo+"','"+estatus+"','"+periodo+"',"+Integer.toString(anio)+","+Integer.toString(mes)+","+Integer.toString(numReciboMes)+")";
			
		SQLiteDatabase db = getWritableDatabase();
		db.execSQL(query);
		db.close();
		db = null;
	
	}
	
	
	public Usuario selectUsuario(){
		Usuario usuario=new Usuario();
		String queryUsuario = "Select * from Usuario";
		SQLiteDatabase db = getReadableDatabase();
		Cursor cursorUsuario = db.rawQuery(queryUsuario, null);
		while(cursorUsuario.moveToNext())
		{
			usuario.setNombre(cursorUsuario.getString(0));
			usuario.setPassword(cursorUsuario.getString(1));
			usuario.setRegId(cursorUsuario.getString(2));
		}
		
		return usuario;
		
	}
	
public Certificado selectCertificado(){
		
		Certificado certificado=new Certificado();
		String query = "Select * from Certificado";
		SQLiteDatabase db = getReadableDatabase();
		Cursor cursor = db.rawQuery(query, null);
		while(cursor.moveToNext())
		{
			certificado.setNumCertificado(cursor.getString(0));
			certificado.setFechaInicio(this.convertirAdate(cursor.getString((1))));
			certificado.setFechaFin(this.convertirAdate(cursor.getString((2))));
			certificado.setEstatus(cursor.getString(3));
		}
		
		return certificado;
		
	}

public Certificado editarCertificado(String numeroCertificado)
{
	SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String fechaInicioS = dateFormat.format(new java.util.Date());
	String fechaFinalS = dateFormat.format(new java.util.Date());
	
	//String queryCertificado = "UPDATE Certificado SET fechaInicio='"+fechaInicioS+"' and fechaFin='"+fechaFinalS+"' and estatus='1' WHERE numero='"+numeroCertificado+"'";
	String queryCertificado = "UPDATE Certificado SET fechaInicio='"+fechaInicioS+"' WHERE numero='"+numeroCertificado+"'";
	String queryCertificado2 = "UPDATE Certificado SET fechaFin='"+fechaFinalS+"' WHERE numero='"+numeroCertificado+"'";
	String queryCertificado3 = "UPDATE Certificado SET estatus=1 WHERE numero='"+numeroCertificado+"'";
	
	SQLiteDatabase db = getWritableDatabase();
	db.execSQL(queryCertificado);
	db.execSQL(queryCertificado2);
	db.execSQL(queryCertificado3);
	
	db.close();
	db = null;
	
	return this.selectCertificado();

}

public List<Recibo> selectRecibosAnio(String anio){
	
	List<Recibo> recibos=new ArrayList<Recibo>();	
	String query = "Select * from Recibo where anio="+anio;
	SQLiteDatabase db = getReadableDatabase();
	Cursor cursor = db.rawQuery(query, null);
	while(cursor.moveToNext())
	{
		Recibo recibo= new Recibo();
		recibo.setId_Recibo(cursor.getString(0));
		recibo.setEstatus(cursor.getString(1));
		recibo.setPeriodo(cursor.getString(2));
		recibo.setAnio(cursor.getInt(3));
		recibo.setMes(cursor.getInt(4));
		recibo.setNumReciboMex(cursor.getInt(5));
		recibos.add(recibo);
		
	}
	
	return recibos;
	
}	

public List<Recibo> selectRecibosAnioMes(String anio,String mes){
	
	List<Recibo> recibos=new ArrayList<Recibo>();	
	String query = "Select * from Recibo where anio="+anio+" and mes="+mes;
	SQLiteDatabase db = getReadableDatabase();
	Cursor cursor = db.rawQuery(query, null);
	while(cursor.moveToNext())
	{
		Recibo recibo= new Recibo();
		recibo.setId_Recibo(cursor.getString(0));
		recibo.setEstatus(cursor.getString(1));
		recibo.setPeriodo(cursor.getString(2));
		recibo.setAnio(cursor.getInt(3));
		recibo.setMes(cursor.getInt(4));
		recibo.setNumReciboMex(cursor.getInt(5));
		recibos.add(recibo);		
	}
	
	return recibos;
	
}	

public Recibo selectReciboID(String id_recibo){
	Recibo recibo= new Recibo();
	String query = "Select * from Recibo where id_Recibo='"+id_recibo+"'";
	SQLiteDatabase db = getReadableDatabase();
	Cursor cursor = db.rawQuery(query, null);
	while(cursor.moveToNext())
	{		
		recibo.setId_Recibo(cursor.getString(0));
		recibo.setEstatus(cursor.getString(1));
		recibo.setPeriodo(cursor.getString(2));
		recibo.setAnio(cursor.getInt(3));
		recibo.setMes(cursor.getInt(4));
		recibo.setNumReciboMex(cursor.getInt(5));
	}
	
	return recibo;
	
}	
	
}
